package com.youlai.boot.modules.game.model.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.youlai.boot.common.base.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 游戏信息实体
 *
 * @author 有来技术团队
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("game_info")
public class GameInfo extends BaseEntity {

    /**
     * 游戏ID
     */
    @TableId(type = IdType.AUTO)
    private Long id;

    /**
     * 游戏名称
     */
    private String name;

    /**
     * 游戏描述
     */
    private String description;

    /**
     * 封面图片
     */
    private String coverImage;

    /**
     * Banner图片
     */
    private String bannerImage;

    /**
     * 游戏分类
     */
    private String category;

    /**
     * 游戏标签，多个用逗号分隔
     */
    private String tags;

    /**
     * 开发商
     */
    private String developer;

    /**
     * 发行商
     */
    private String publisher;

    /**
     * 发布日期
     */
    private LocalDate releaseDate;

    /**
     * 价格
     */
    private BigDecimal price;

    /**
     * 折扣价格
     */
    private BigDecimal discountPrice;

    /**
     * 折扣开始时间
     */
    private LocalDateTime discountStart;

    /**
     * 折扣结束时间
     */
    private LocalDateTime discountEnd;

    /**
     * 评分
     */
    private BigDecimal rating;

    /**
     * 评分人数
     */
    private Integer ratingCount;

    /**
     * 下载次数
     */
    private Integer downloadCount;

    /**
     * 游戏大小，如 1.2GB
     */
    private String size;

    /**
     * 当前版本号
     */
    private String version;

    /**
     * 最低年龄要求
     */
    private Integer minAge;

    /**
     * 状态：0-下架，1-上架
     */
    private Integer status;

    /**
     * 排序号，值越大越靠前
     */
    private Integer sort;

    /**
     * 是否推荐：0-否，1-是
     */
    private Integer featured;

    /**
     * 是否热门：0-否，1-是
     */
    private Integer hot;

    /**
     * 是否新品：0-否，1-是
     */
    private Integer new_;

    /**
     * 游戏截图（非数据库字段）
     */
    @TableField(exist = false)
    private List<GameScreenshot> screenshots;

    /**
     * 游戏分类信息（非数据库字段）
     */
    @TableField(exist = false)
    private GameCategory categoryInfo;
} 